perm filename PTY.JMG[UP,DOC]1 blob
sn#085658 filedate 1974-04-27 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 HOW TO FEED AND CARE FOR PTY
C00004 00003 LOOPING THROUGH THE COMMAND FILE
C00007 00004 HERE ARE SOME EXAMPLES OF (SYNONYMOUS) SEQUENCE-LISTS
C00008 00005 PTY WILL RECOGNIZE THESE SPECIAL CHARACTERS
C00010 00006 MORE SPECIAL CHARACTERS WHICH PTY WILL (HOPEFULLY) RECOGNIZE
C00013 00007 WHEN YOU R PTY IT WANTS TO KNOW A FEW THINGS
C00015 00008 HERE IS A SIMPLE EXAMPLE:
C00016 ENDMK
C⊗;
HOW TO FEED AND CARE FOR PTY
PTY IS A GENERAL PURPOSE PSEUDO-TTY COMMAND
PROCESSOR. THE USER CREATES A FILE WHICH LISTS THE
SET OF COMMANDS THAT HE WOULD LIKE TO TYPE ON A TTY.
PTY SENDS THESE COMMANDS TO A PSEUDO-TTY. THE USER
CAN SEE THE TYPEOUT ON HIS TTY AND/OR HAVE IT STORED
IN AN OUTPUT FILE FROM PTY.
PTY IS MOST USEFUL TO SETUP A PRODUCTION RUN
WHICH LOOPS THROUGH A SET OF COMMANDS SEVERAL TIMES,
CHANGING A FEW PARAMETERS FOR EACH PASS. THE USER CAN
SPECIFY SUCH A LOOP IN THE FILE HE GIVES TO PTY.
ALL LINES OF THE INPUT FILE MUST BEGIN WITH
ONE OF THE FOLLOWING FOUR CHARACTERS:
"." IF THE LINE IS A MONITOR COMMAND.
"*" IF THE LINE IS A PROGRAM COMMAND.
TAB IF THIS IS A CONTINUATION OF THE PREVIOUS LINE.
SPACE LIKE TAB.
"LOOP" IF THIS IS AN INNER LOOP SPECIFICATION.
THE FIRST LINE OF THE FILE MUST BE A LOGIN
(MONITOR-LEVEL) COMMAND WITH THE USER'S PPN:
.L 1/PPN
LOOPING THROUGH THE COMMAND FILE
THERE ARE TWO WAYS TO INITIATE LOOPING THROUGH THE
COMMAND FILE. ONE CAN SET THE VARIABLE "LOOPS" WHEN RUNNING
PTY OR ONE CAN EMBED A SEQUENCE-LIST IN SOME LINE. A SEQUENCE-
LIST IS A SET OF SUB-STRINGS SUCH THAT THE NTH SUB-STRING WILL
BE CHOSEN IN THE NTH LOOP THROUGH THE FILE. THIS SUB-STRING
WILL BE DIRECTLY EMBEDDED IN THE CONTEXT THAT THE SEQUENCE-LIST
WAS PLACED. THE TOTAL NUMBER OF LOOPS THROUGH THE FILE CAN THUS
BE DETERMINED BY THE LONGEST SEQUENCE-LIST, AND ALL SHORTER
SEQUENCE-LISTS WILL WRAP AROUND RESPECTIVELY.
THE FORMAT FOR A SEQUENCE-LIST FOLLOWS (NOTE THAT A SPECIAL
CHARACTER APPEARS IN QUOTES FOR THE PURPOSE OF STATING THE FORMAT ONLY.
THE QUOTES SHOULD NOT APPEAR IN THE ACTUAL FILE. LIKEWISE, THE UNDER-
LINE CHARACTER IS USED IN EXAMPLES OF FORMAT ONLY AS A VISUAL AID
TO SEGMENT STRINGS OR NUMBERS WHICH APPEAR IN THE CONTEXT OF SPECIAL
CHARACTERS. NO UNDERLINES OR SPACES SHOULD BE USED IN THE FILE):
"⊂"_STR1_"|"_STR2_"|"_ ... _"|"_STRN_"⊃"
NOTE THAT THE LIST IS BOUNDED BY "⊂" AND "⊃", AND THE SUB-
STRINGS ARE SEPARATED BY THE DELIMETER "|". IT IS PERMISSIBLE
TO SPECIFY THE CONSEQUETIVE REPETITION OF ANY STRING IN THE LIST
BY FOLLOWING THAT STRING WITH: "@"_NUM , WHERE NUM IS THE NUMBER
OF REPETITIONS DESIRED.
HERE ARE SOME EXAMPLES OF (SYNONYMOUS) SEQUENCE-LISTS
*⊂FOO.1|FOO.2|FOO.3|FOO.3|FOO.3⊃
*⊂FOO.1|FOO.2|FOO.3@3⊃
*FOO.⊂1|2|3|3|3⊃
*FOO.⊂1|2|3@3⊃
THE ABOVE COMMANDS WOULD SET PTY TO LOOP THROUGH THE WHOLE
FILE AT LEAST 5 TIMES. THE NTH SUCCESSIVE LOOP WOULD EMPLOY THE NTH
STRINGS IN THE ABOVE LINES. AN EXAMPLE OF TWO SEQUENCE-LISTS OF
UNEQUAL LENGTHS, AND A SYNONYMOUS LINEAR LIST FOLLOWS:
*⊂FOO@3|BAZ@3⊃.⊂1|2⊃
*⊂FOO.1|FOO.2|FOO.1|BAZ.2|BAZ.1|BAZ.2⊃
PTY WILL RECOGNIZE THESE SPECIAL CHARACTERS
"↑"_CHR CONTROL KEY, TO MONITOR (CHR←CHR-'100).
("↑C" IS CALL).
"α"_CHR CONTROL KEY AT USER LEVEL (CHR←CHR+'200).
"β"_CHR META KEY AT USER LEVEL (CHR←CHR+'400).
"$" ALTMODE.
"¬" BACKSPACE.
"""_STR_""" STR IS USED AS IS.
SPECIAL CHARACTERS ARE NOT INTERPRETED.
"⊗" IF THIS CHARACTER IS PLACED IN FRONT OF A COMMAND
THEN IT WILL ONLY BE FUNCTIONAL IN THE FIRST LOOP.
"\" SUPPRESS THE <CR> AT THE END OF THE COMMAND.
"#" SUBSTITUTE THE LOOP NUMBER FOR THIS CHR.
"∪" INTERACTIVE PAUSE (IS A COMPLETE COMMAND):
THE MESSAGE "TYPE <CR> TO CONTIMUE" WILL
APPEAR ON TTY AND PTY WAITS FOR <CR>.
"∩" INTERACTIVE TTY MODE (IS A COMPLETE COMMAND):
THE MESSAGE "TTY INPUT MODE. TO EXIT TYPE "∩" "
WILL APPEAR ON TTY AND PYT WILL ACCEPT INPUT
FROM TTY UNTIL IT SEES "∩" CHARACTER.
MORE SPECIAL CHARACTERS WHICH PTY WILL (HOPEFULLY) RECOGNIZE
"↓"_NUM_"↓" SKIP NUM-1 LINES FOR NEXT INSTRUCTION
COMMAND_"∧"_NUM
LOCAL SLEEP SWITCH IS SET TO NUM SECONDS. THIS MUST
APPEAR AT VERY END OF A LINE AND SETS THE LAG UNTIL
THE NEXT LINE IS PROCESSED.
COMMAND_"{"_STR1_"}"_STR2_"↓"_NUM_"↓"
EVALUATE THE INCOMING STRINGS AFTER THE COMMAND IS SENT
OUT AND TEST FOR THE (SUB)STRING STR1. IF IT OCCURS:
1. SEND OUT THE STRING STR2.
2. SKIP NUM-1 LINES IN THE COMMAND FILE (OPTIONAL).
"LOOP"_NUM1_"FOR"_NUM2
THE NEXT NUM1 LINES IS TREATED AS AN INNER LOOP TO THE MAIN
LOOP (THROUGH THE ENTIRE FILE). IT WILL BE READ THROUGH
NUM2 TIMES BEFORE CONTINUING IN THE MAIN BODY. NOTE THAT
NUM1 OR NUM2 (THE LATTER MAY BE USEFUL) CAN BE SET UP
AS A SEQUENCE-LIST AS WELL AS A CONSTANT. AS USUAL, THE
SEQUENCE-LIST IS INDEXED WITH RESPECT TO THE MAIN LOOP.
THE SPECIAL CHARACTERS "∀" AND "∃" MAY BE USED AS COUNTERS
IN THE INNER LOOP, AS "#" IS USED IN THE MAIN LOOP. THEY
WILL RESET TO 1 AT THE INITIALIZATION OF EACH INNER LOOP.
"←" PTY WILL ASK FOR A STRING, WHICH WILL BE SUBSTITUTED FOR THE
ARROW IN THE FILE (INTERACTIVELY).
"→" PTY WILL SUBSTITUTE THAT SAME STRING FOR THE REST OF THIS
PARTICULAR LOOP FOR THIS ARROW.
WHEN YOU R PTY IT WANTS TO KNOW A FEW THINGS
"INPUT : " - (COMMAND "FILE.EXT") (OR SEE BELOW)
(EXT="PTY" IS DEFAULT AND NEED NOT BE STATED)
"OUTPUT : " - ("TTY:" AND/OR OUTPUT "FILE.EXT", E.G.:
1. "TTY:"
2. "OUTPUT.LST"
3. "TTY:OUTPUT.LST"
4. NULL (=NO RECORD AT ALL)
YOU MAY SET ANY OF THE FOLLOWING PARAMETERS
"OFFSET" - THE OFFSET OF THE NUMBER WHICH "#" WILL CAUSE
TO BE PRINTED VS. THE REAL LOOP NUMBER (DEFAULT=0).
"START" - THE FIRST ACTUAL LOOP TO BE PROCESSED (DEFAULT=1).
"LOOPS" - THE NUMBER OF LOOPS THRU THE COMMAND FILE, IF
NOT OTHERWISE SPECIFIED.
"SLEEP" - THE NUMBER OF SECONDS THE PTY WILL WAIT BEFORE PROCESSING
THE NEXT COMMAND. (NOTE THAT PTY CAN TAKE AS MUCH
COMPUTER TIME AS THE JOBS IT RUNS IF SLEEP=0)
"DEBUG" - TYPE OUT THE MAGIC BITS (INTERESTED????).
TYPE <CR> TO "INPUT : " AND "*" WILL BE PRINTED.
THEN SET VARIABLE "VAR" TO SOME VALUE AS FOLLOWS:
*VAR←VALUE;
*<CR> WILL RETURN YOU TO "INPUT : "
HERE IS A SIMPLE EXAMPLE:
.L 1/PPN
.⊗A DTA1:
.ED BAZ.SAI
*S#$⊂2|3|4⊃$100
*D200:*
*I200
*COMMENT THIS IS VERSION NUMBER # OF BAZ.SAI
AND THIS IS A COMMENT ON LINE 200;
*$
*E
.TYPE BAZ
.∪
.R SAIL
*BAZ#.REL←BAZ.SAI∧10
*↑C
.R LOADER
*BAZ#$∧10
.SAV BAZ⊂1|2|3⊃
.COP DTA1:←BAZ#.DMP